﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entities
{
    public class UsuarioNegocio : Usuario
    {
        #region propiedades
        public Negocio Negocio;

        public UsuarioNegocio()
        {
        }

        public UsuarioNegocio(bool Nuevo)
        {
            Direccion = new Direccion();
            Provincia = new Provincia();
            Pais = new Pais();
            UsuarioTipo = new UsuarioTipo();
            Negocio = new Negocio();
        }
        #endregion


        #region MetodosGenerales
        public static long Nuevo(UsuarioNegocio parUsuarioNegocio)
        {
            try
            {
                return DAL.UsuarioDAL.Nuevo(parUsuarioNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        //public static UsuarioNegocio BuscarUnoPorEmail(string parEmail)
        //{
        //    UsuarioNegocio oUsuario = new UsuarioNegocio();
        //    oUsuario = DAL.UsuarioDAL.BuscarUsuarioNegocioUnoPorEmail(parEmail);
        //    return oUsuario;
        //}

        public static UsuarioNegocio BuscarUsuarioNegocioPorEmail(string parEmail)
        {
            UsuarioNegocio oUsuario = new UsuarioNegocio();
            oUsuario = DAL.UsuarioDAL.BuscarUsuarioNegocioUnoPorEmail(parEmail);
            return oUsuario;
        }

        public static void Modificar(UsuarioNegocio parUsuarioNegocio)
        {
            try
            {
                DAL.DireccionDAL.Modificar(parUsuarioNegocio.Direccion);
                DAL.UsuarioDAL.Modificar(parUsuarioNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static void Eliminar(long parIdUsuarioNegocio)
        {
            try
            {
                DAL.UsuarioDAL.Eliminar(parIdUsuarioNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static UsuarioNegocio BuscarUno(long parIDUsuarioNegocio, bool traerEmpleados)
        {
            try
            {
                UsuarioNegocio oUsuarioNegocio = new UsuarioNegocio();
                oUsuarioNegocio = (UsuarioNegocio)DAL.UsuarioDAL.BuscarUnoPorID(parIDUsuarioNegocio, traerEmpleados);
                return oUsuarioNegocio;
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static UsuarioNegocio BuscarEncargadoPorNegocio(long parIDNegocio)
        {
            try
            {
                UsuarioNegocio oUsuarioNegocio = new UsuarioNegocio();
                oUsuarioNegocio = (UsuarioNegocio)DAL.UsuarioDAL.BuscarUnoEncargadoPorIDNegocio(parIDNegocio, false);
                return oUsuarioNegocio;
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }


        public static List<UsuarioNegocio> BuscarVariosPorNegocio(long  IdNegocio)
        {
            try
            {
                List<UsuarioNegocio> ListaUsuarios = new List<UsuarioNegocio>();
                ListaUsuarios = DAL.UsuarioDAL.BuscarVariosPorNegocio(IdNegocio);
                return ListaUsuarios;
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }
        #endregion
    }
}
